package com.eds.timeTask;


import com.eds.mapper.CourseBookingMapper;
import com.eds.mapper.CourseMapper;
import com.pojo.Course;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.Duration;
import java.util.Date;

@Component
public class DataStatusUpdateTask {

    @Autowired
    private CourseBookingMapper courseBookingMapper;
    @Autowired
    private CourseMapper courseMapper;

    /**
     * 每天晚上12点执行
     * cron表达式说明：
     * 秒 分 时 日 月 周
     * 0 0 0 * * ? 表示每天0点0分0秒执行
     */

    //@Scheduled(fixedDelay = 180000) // 延迟 3 分钟（180000 毫秒）
    @Scheduled(cron = "0 0 0 * * ?")//每天0点0分0秒执行
    public void updateCourseBookingStatus() {
        // 查询所有需要更新的订单
        courseBookingMapper.selectList(null).forEach(courseBooking -> {
            if (courseBooking.getStatus() == 1) { // 状态为1（已确认）
                // 计算时间差（以小时为单位）
                Date bookingTime = courseBooking.getBookingTime();
                Course course = courseMapper.selectById(courseBooking.getCourseId());
                Long studyPeople = course.getStudyPeople();
                Date now = new Date();
                // 将 Date 转换为 Instant
                long diffInSeconds = Duration.between(bookingTime.toInstant(), now.toInstant()).getSeconds();


                // 根据时间差更新状态
                if (diffInSeconds > 0) {
                    courseBooking.setStatus(3); // 设置为已完成状态
                    course.setStudyPeople(studyPeople + 1);
                }

                // 更新订单状态
                courseBookingMapper.updateById(courseBooking);
                //更新课程状态
                courseMapper.updateById(course);
            }
        });


    }
}